package com.dragon.backstage.convert;

import cn.hutool.core.util.StrUtil;
import com.dragon.backstage.domain.param.menu.MenuParam;
import com.dragon.backstage.domain.vo.menu.MenuAsyncPermissionVo;
import com.dragon.backstage.domain.vo.menu.MenuDetailVo;
import com.dragon.backstage.domain.vo.menu.MenuVo;
import com.dragon.interfaces.domain.request.menu.MenuRequest;
import com.dragon.interfaces.entity.Menu;

/**
 * 菜单模块类型转换
 *
 * @author dragon
 * @version 1.0
 * @date 2024/8/5 16:27
 */
public class MenuConvert {

    public static MenuRequest toMenuRequest(MenuParam menuParam) {
        return MenuRequest
            .builder()
            .menuName(menuParam.getMenuName())
            .status(menuParam.getStatus())
            .menuTypes(menuParam.getMenuTypes())
            .hasPermission(menuParam.getHasPermission())
            .userId(menuParam.getUserId())
            .build();
    }

    public static MenuVo toMenuVo(Menu menu) {
        return MenuVo
            .builder()
            .menuId(menu.getMenuId())
            .parentId(menu.getParentId())
            .menuName(menu.getMenuName())
            .menuSort(menu.getMenuSort())
            .menuType(menu.getMenuType())
            .visible(menu.getVisible())
            .status(menu.getStatus())
            .permission(menu.getPermission())
            .remark(menu.getRemark())
            .name(menu.getName())
            .path(menu.getPath())
            .component(menu.getComponent())
            .icon(menu.getIcon())
            .createTime(menu.getCreateTime())
            .build();
    }

    public static MenuAsyncPermissionVo toMenuAsyncPermissionVo(Menu menu) {
        return MenuAsyncPermissionVo
            .builder()
            .menuName(menu.getMenuName())
            .permission(StrUtil.toCamelCase(menu.getPermission(), '.'))
            .build();
    }

    public static MenuDetailVo toMenuDetailVo(Menu menu) {
        return MenuDetailVo
            .builder()
            .menuId(menu.getMenuId())
            .parentId(menu.getParentId())
            .menuName(menu.getMenuName())
            .menuSort(menu.getMenuSort())
            .menuType(menu.getMenuType())
            .visible(menu.getVisible())
            .status(menu.getStatus())
            .permission(menu.getPermission())
            .remark(menu.getRemark())
            .name(menu.getName())
            .path(menu.getPath())
            .component(menu.getComponent())
            .icon(menu.getIcon())
            .isFull(menu.getIsFull())
            .activeMenu(menu.getActiveMenu())
            .redirect(menu.getRedirect())
            .isLink(menu.getIsLink())
            .isAffix(menu.getIsAffix())
            .isKeepAlive(menu.getIsKeepAlive())
            .createBy(menu.getCreateBy())
            .createTime(menu.getCreateTime())
            .updateBy(menu.getUpdateBy())
            .updateTime(menu.getUpdateTime())
            .build();
    }

}
